# 作者：SP
# 开发时间：2024/7/31 21:14
'''filter() 是一个内置函数，用于从可迭代对象（如列表、元组等）中筛选出符合条件的元素。
它接受两个参数：一个函数和一个可迭代对象
filter(function, iterable)
function: 一个函数，该函数接收一个元素并返回一个布尔值。如果返回 True，则保留该元素；如果返回 False，则丢弃该元素。
iterable: 可迭代对象，如列表、元组等
返回值
filter() 返回一个迭代器，其中包含了满足 function 条件的所有元素。通常需要通过 list(), tuple(),
或其他类似的方法将其转换为具体的数据类型'''
#单个可迭代对象
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 使用 lambda 函数来定义筛选条件
even_numbers = filter(lambda x: x % 2 == 0, numbers)
# 将 filter 对象转换为列表
even_numbers_list = list(even_numbers)
print(even_numbers_list)  # 输出: [2, 4, 6, 8, 10]

#多个可迭代对象
'''filter() 不直接支持多个可迭代对象，但如果需要处理多个可迭代对象，可以通过先合并它们再过滤的方式实现'''
'''注意事项
在Python 3.x中，filter() 返回的是一个迭代器，而不是列表。如果你想得到一个列表，需要显式地使用 list() 函数。
如果没有提供任何可迭代对象，filter() 将不会执行任何操作，返回一个空的迭代器。
如果第一个参数 function 是 None 或者被省略，filter() 会默认使用布尔化，即只保留那些布尔值为 True 的元素。'''